home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ANIVGA.ZIP / EXAMPLE2.PAS < prev    next >
Pascal/Delphi Source File  |  1992-08-16  |  2KB  |  82 lines

  1. PROGRAM Example2;
  2.  
  3. {Demonstrates using scrolling backgrounds}
  4.  
  5. USES ANIVGA,CRT;
  6. CONST TileName='tile2.COD';    {4 simple tiles}
  7.       SpriteName='flower.COD';
  8.       ch:Char=#0;
  9. VAR i,j:Integer;
  10.     temp:WORD;
  11.     collide:BOOLEAN;
  12.  
  13. PROCEDURE Init;
  14. VAR gx,gy,count:INTEGER;
  15. BEGIN
  16.  XTiles:=0; YTiles:=0;
  17.  SetBackgroundMode(scrolling);
  18.  SetOffscreenTile(3);
  19.  SetBackgroundScrollRange(-500,-500,100,100);
  20.  
  21.  {paste tiles into this background, using circular enumeration 0,1,2,3,0,...}
  22.  count:=0;
  23.  gy:=BackY1;
  24.  REPEAT
  25.   gx:=BackX1;
  26.   REPEAT
  27.    PutTile(gx,gy,count);
  28.    inc(count); count:=count mod 4;
  29.    inc(gx,16);
  30.   UNTIL gx>BackX2;
  31.   inc(gy,16);
  32.  UNTIL gy>BackY2;
  33.  
  34.  {Set SPRITEAD[10]:}
  35.  IF loadSprite(SpriteName,10)=0
  36.   THEN BEGIN
  37.         WRITELN('Couldn''t access file '+SpriteName+' : '+GetErrorMessage);
  38.        END;
  39. END;
  40.  
  41. BEGIN
  42.  Init;
  43.  InitGraph;
  44.  temp:=LoadTile(TileName,0); {load the 4 tiles & give them the numbers 0..3}
  45.  IF Error<>Err_None
  46.   THEN BEGIN
  47.         CloseRoutines;
  48.         WRITELN('Couldn''t access file '+TileName+' : '+GetErrorMessage);
  49.         halt(1)
  50.        END;
  51.  
  52.  SetCycleTime(0); {animation as fast as possible}
  53.  
  54.  SpriteN[0]:=10; SpriteX[0]:=0;   SpriteY[0]:=0;
  55.  SpriteN[5]:=10; SpriteX[5]:=100; SpriteY[5]:=100;
  56.  
  57.  WHILE keypressed DO ch:=readkey;
  58.  Animate;
  59.  REPEAT
  60.   collide:=Hitdetect(0,5);
  61.   IF collide THEN BEGIN sound(1000); delay(5); nosound END;
  62.   if KeyPressed
  63.    THEN BEGIN
  64.          WHILE KeyPressed DO ch:=Upcase(ReadKey);
  65.          CASE ch OF
  66.           'I':dec(SpriteY[0]);  {change position of sprite with I,J,K,M}
  67.           'J':dec(SpriteX[0]);
  68.           'K':inc(SpriteX[0]);
  69.           'M':inc(SpriteY[0]);
  70.           'E':dec(StartVirtualY,10);  {change position of whole scene with}
  71.           'S':dec(StartVirtualX,10);  {E,S,D,X}
  72.           'D':inc(StartVirtualX,10);
  73.           'X':inc(StartVirtualY,10);
  74.          END;
  75.          IF POS(ch,'IJKMESDX')>0 THEN Animate;
  76.         END;
  77.  
  78.  UNTIL (ch='Q') OR (ch=#27);  {"Q" or ESC to quit}
  79.  
  80.  CloseRoutines;
  81.  
  82. END.